Deconvolution of MLS response data

ABSTRACT

A method of and apparatus for the deconvolution of response data obtained from transmission of a maximum length sequence, wherein the samples of incoming data are deconvoluted and stored in a reconstruction buffer as said samples are received. It is possible in this way to employ a reconstruction buffer shorter than that necessary to store the complete deconvoluted waveform.

This application is a 371 of PCT/GB94/00862 filed on Apr. 22, 1994.

FIELD OF THE INVENTION

This invention relates to a method of and apparatus for thedeconvolution of response data obtained from transmission of maximumlength sequences (MLS), similar sequences or variants of similarsequences. References to MLS hereinafter are intended to include suchsimilar or variant sequences.

BACKGROUND OF THE INVENTION

The applicants' prior International patent application NoPCT/GB93/00639. relates to the use of a maximum length sequencetechnique to record otoacoustic emissions. One field of application ofthe present invention is the deconvolution of response data in thetechnique proposed in the prior patent application. However, the presentinvention is not restricted to that field of application.

For signals that have to be extracted from noise, a conventionallyapplied method, as described in the prior patent application, is tostimulate with an MLS, record the response or incoming signal generatedby that MLS and, using sampling techniques, store the received waveformin a memory buffer whose length is equal to the length of the MLSmultiplied by the number of ADC samples that are required per MLS entryin order to avoid aliasing errors.

Another MLS is immediately delivered and its received waveform added tothat already in the memory buffer. This process is continued untilsufficient received waveforms have been added to improve thesignal-to-noise ratio to an adequate degree.

The original response, or input signal, then has to be recovered by adeconvolution technique. One example of a suitable technique, proposedin the prior patent application, is as follows.

Let L equal the length of the MLS. The MLS represents stimuli that willbe presented at a specified rate. If the minimum time betweenpresentations of stimuli, corresponding to the elements in the MLS, issuch that n samples are required to characterise the response orincoming signal then that period is known as a slice of the MLS and n isthe number of samples in one slice. Once the responses to a set of MLSshave been recorded, as described above, then the resultant waveform iscontained in a raw data buffer whose length is equal to nL. Areconstruction memory buffer, of equal length to the raw data buffer, iszeroed. The recovery sequence is then generated and comprises a 1 forevery instance for which the MLS contains a 1 and a -1 for everyoccurrence of a zero in the original MLS. The data in the raw databuffer are then each multiplied by the first element in the recoverysequence. The product is added to the reconstruction buffer. The data inthe raw data buffer are then rotated left by one slice. They are theneach multiplied by the second element in the recovery sequence and againadded to the reconstruction buffer. This operation is continued untilall the elements in the recovery sequence have been used. Thereconstruction buffer will then contain the original waveformdeconvolved from the MLS. The procedure is illustrated in FIG. 1 of theaccompanying drawings.

The disadvantages of the above-described deconvolution technique may beillustrated by an example using evoked otoacoustic emissions recordedwith an MLS.

1. As the response is being averaged from noise then it is useful to beable to avoid the noisiest periods (excess noise) during the recordingof the signal. Typically this is done by rejecting, that is not addingto the average, any periods of the response where the waveform recordedfrom the subject or patient exceeds a certain limit. However, as thestimulus is also recorded then, using conventional techniques, thestimulus period has to be excluded from this rejection criterion. Withthe MLS technique and the overlapping of stimuli and responses, it isnot possible sensibly to apply the described rejection methods. This isa problem with using the above-described deconvolution technique for theMLS. The signal-to-noise ratio is poorer than it might otherwise bebecause periods of high noise activity have to be included in theaverage.

2. Without the use of a very large amount of processing power, nodeconvolved waveform can be obtained until the entire averaging processis complete because errors will occur if the averaging procedure isinterrupted in order to effect the deconvolution. This is because MLSsamples will be missed, leading to errors in the reconstruction of theoriginal waveform.

THE INVENTION

According to one aspect of the present invention, there is provided amethod of deconvolution of response data obtained from transmission of aMLS (including similar and variant sequences as hereinbefore mentioned),according to which the samples of incoming data are deconvoluted andstored in a reconstruction buffer as they are received.

According to another aspect of the invention, there is providedapparatus for deconvolution of response data obtained from transmissionof a MLS, comprising a reconstruction buffer and means for deconvolutingeach sample of incoming data as it arrives and storing the deconvolutedsample in the reconstruction buffer.

For completeness, it should be mentioned that an MLS is a quasi-randombinary sequence with strictly defined mathematical properties. Possiblevariants are Legendre sequences, M-pulse sequences and De Bruijnsequences.

In a development of the method and apparatus of the invention, means areprovided to reject immediately any one or more reconstructed MLSS whichare contaminated by noise in excess of a predetermined limit such thatthey should not be added to the average being collected in thereconstruction buffer.

A preferred technique for practising the invention comprises multiplyingeach sample in turn by the elements of the recovery sequence as thesample is received and immediately adding the product into correspondingpositions in the reconstruction buffer.

The invention has the advantage that a raw data buffer memory, equal insize to the length of the MLS, is no longer required. As a result, it ispossible to achieve substantial saving in the time required to carry outdeconvolution and reconstruction of the original signal.

Furthermore, the reconstruction buffer need only be as large as the timewindow required to observe the final waveform. This means that saidbuffer can, in general, be very much shorter than the MLS. Thus, it ispossible to transmit very long MLSs without the requirement for largebuffers.

One field of application of the invention is in the recording ofbiological signals obtained as response data due to stimulation by aMLS. For example, in the testing of hearing, a MLS may be used to recordEvoked Otoacoustic Emissions (EOAs) which constitutes the incomingresponse data. The original signal can then be recovered from thisresponse data by the deconvolution method and apparatus in accordancewith the invention.

The apparatus in accordance with the invention may comprise a digitalsignal processing board, a computer and controlling software.

Thus, according to another aspect of the invention, there is provided adigital signal processing board and a computer programmed to carry outdeconvolution of the MLS by the method hereinbefore defined.

DESCRIPTION OF EMBODIMENT

The method and apparatus of the invention are exemplified in thefollowing description, making reference to accompanying FIGS. 1 to 7, inwhich:

FIG. 1 illustrates a prior deconvolution technique;

FIG. 2 illustrates the deconvolution technique in accordance with theinvention;

FIGS. 3 is a flow diagram illustrating the technique in accordance withthe invention, when carried out using a recovery window shorter than theMLS; and

FIG. 4 is a table of values applicable to the flow diagram of FIG. 3 inone typical case.

A prior deconvolution technique is illustrated in FIG. 1. For an MLS oflength L, the slices B₀ to B_(L-1) of the incoming signal are averagedand stored in a raw data buffer. The values in the data buffer are thenmultiplied by the first element in the recovery sequence (Mo-Mn). Thedata from the raw data buffer are then added to the previously zeroedreconstruction buffer. The data in the raw data buffer are then rotatedone place to the left, multiplied by the second element in the recoverysequence and added to the contents of the reconstruction buffer. Thisprocess is repeated until all distinct rotations of the raw data bufferhave been completed (a total of L additions and L-1 rotations).

From FIG. 1 it can be seen that samples initially stored in slice B_(n)are ultimately added to A_(m) after multiplying by M_(n-m). Inaccordance with the invention, it has been realised that, instead ofadding raw samples to B and then shifting, multiplying and adding intoA, it is possible to simply multiply each raw sample in turn by theappropriate element M of the recovery sequence and add it directly tothe corresponding positions in A. This will build up the reconstructedaverage directly from the incoming samples. This process is illustratedin FIG. 2.

This approach in accordance with the invention has several advantages:

1. With each incoming sample being dealt with on arrival there is noneed to store the raw data samples for subsequent processing; the largeraw data buffer B (of size nL) is thus dispensed with.

2. Only the R slices of A that span the required reconstruction windowneed to be stored, thus the memory required for the reconstructionbuffer is reduced from nL to nR.

3. The number of operations performed on each sample is dependent on Rrather than L, thus the processing load is reduced.

4. With both memory and processing requirements reduced, one can morereadily use double-buffering techniques to generate a separatereconstruction for each presentation of the MLS sequence. Eachreconstructed response can then be compared with a template and rejectedif any value is too large. Acceptable responses can then be added into asummation buffer. The direct reconstruction approach thus makesreal-time rejection of excess noise periods possible. This is a markedpractical advantage for taking measurements where the time to record islimited primarily by the noise contamination on the signal.

Another way of explaining the technique in accordance with the inventionis as follows.

FIG. 3 is a flow diagram illustrating an application of the technique inaccordance with the invention when the recovery window or reconstructionbuffer is shorter than the MLSS. The logical operations employed in thetechnique will be readily understood from the flow diagram, when this isread in conjunction with the following definitions:

    ______________________________________                                        L          Length of MLS                                                      n          Number of samples in one slice of the MLS                          m          Number of slices in the recovery window                            p          Number of samples in MLS (p = n*L)                                 x          ADC samples of the input (i = 1 to p)                              q          Number of samples in the recovery window                                      (q = m*n)                                                          W(j)       Recovery window (j = 1 to q)                                       R(k)       Recovery sequence  = +1 or -1! (k = 1 to L)                        a          Number of slices to start of recovery window                       z          Number of MLS needed in average                                    mptr       Main recovery sequence pointer                                     rptr       Secondary recovery sequence pointer                                wptr       Recording window pointer                                           ______________________________________                                    

Further understanding will be gained from FIG. 4, which is a table offlow diagram values for one particular case in which one MLS has alength 3 and the recovery window starts after one slice and has aduration of two slices.

In principle, the illustrated technique, which may be referred to as MLSrecovery "on the fly" is as follows:

Consider an MLS of length 3. This will have slices M1, M2 and M3 asshown in A!.

For the MLS in which M1=M2=1 and M3=0 the rotation and multiplicationneeded for conventional recovery are shown in B!. ##STR1## In general,the multiplication and rotations are shown in C!. It may not always bethe case that the required recovery window will start at the start ofthe MLS and a case in which the recovery window has a delay of one slicefrom the start of the MLS is shown in D!. ##STR2## Now consider the sameexample as shown in D! but with the individual ADC samples taken intothe picture. The MLS is 1 1 0 with a recovery sequence R(k)=1 1 -1. Letthere be three ADC samples per slice (n=3). The ADC samples in one MLSwill be denoted by the letters a to i.

The MLS and the samples are shown in E! and the matrix of samples thatwill make up the recovered waveform for the delayed recovery window, areshown in F!. ##STR3## The flow diagram and the accompanying table showshow the on-the-fly recovery algorithm can be used to obtained thedesired, recovered waveform.

The invention is preferably realised using a digital signal processingboard and a conventional computer, The software may be realised in anysuitable language or code and, as an example, details of the routinesFILLER and CHECKER which have been written in "C", to give an example ofthe coding involved, are as follows:

    __________________________________________________________________________    /*============================================================                FILLER - collect & deal with one sample                                       In actual use this would be an interrupt service routine, dealing with        each                                                                          incoming sample. For each input sample a stimulus sample may be output,       depending on the value of the current MLS entry.                              ============================================================*/                void filler ( ) {                                                              float samp;         // current input sample                                   int n;                                                                        int * mpr;          // -> MLS entries                                         mpr = &mls sliceno!;                                                                              // -> MLS entry for current slice                         if (*mpr==1)        // entry indicates stimulus?                               outsamp (outbuff sampno!);                                                                       // yes- output stimulus sample                            samp = getsamp( );  // get input sample                                      for (n=0; n<rlen; n+=slen) {                                                                       // for each recon. slice                                   currbuff  n+sampno! += samp * *mpr;                                                              // add/subtract to current buffer                          mpr--;             // move back through MLS . . .                             if (mpr < mls)                                                                 mpr = &mls mlslen-1!;                                                                           // with wrap-around to end of MLS                          }                                                                            sampno++;           // count samples done within slice                        if (sampno < slen)                                                             return;            // return if still within slice                                               // start of new slice:-                                   sampno = 0;         // reset sample number                                    sliceno++;          // bump slice counter                                     if (sliceno < mlslen)                                                          return;            // return if not at end of MLS                                                // end of MLS:-                                           sliceno = 0;        // reset slice counter                                    toggle = |toggle;   // switch reconstruction buffers                          currbuff = toggle ? recon1 : recon2;                                                              // -> next buffer                                         mlspnt = &mls sliceno!;                                                                           // Reset mls pointer to start of MLS                      }                                                                            /*============================================================                CHECKER - process completed reconstructions                                   Checks to see if a buffer has completed being filled. If so, checks           buffer                                                                        values against a rejection template and, if no values are too large, adds     each                                                                          value into a summation buffer.                                                ============================================================*/                int checker ( ) {                                                              int i;                                                                        int ok;                                                                       if (currbuff == prevbuff)                                                                         // has `filler` finished a recon.?                         return (0);        // no- wait some more                                                         // yes- `prevbuff` points at it . . .                     ok = 1;                                                                       for (i=0; i<rlen; i++)                                                                            // check each value against template                       if (fabs(prevbuff i!) > reject i!) {                                           ok = 0;                                                                       break;                                                                        }                                                                           if (ok) {           // all values passed-                                      for (i=0; i<rlen; i++)                                                         summation i! += prevbuff i!;                                                                    // add to summation buffer                                 mlsdone++;         // count good reconstructions                              }                                                                           for (i=0; i<rlen; i++)                                                                             // re-zero buff for next reconstruction                    prevbuff i! = 0;                                                             prevbuff = currbuff;                                                                              // update pointer                                         }                                                                            /*============================================================                MAIN                                                                          In practice `checker` would be written to loop until enough good              reconstructions had been gathered, and would be continuously interrupted      by `filler`. We simulate this here by placing both calls in a loop.           ============================================================*/                main (int argc, char * argv  ! ) {                                             int i, n, n.sub.-- needed;                                                    n.sub.-- needed = 10;                                                                             // ask for 10 reconstructions                             mls.sub.-- init ( );                                                                              // initialise variables, buffers, etc                     do {                                                                           filler ( );                                                                   checker ( );                                                                  } while (mlsdone < n.sub.-- needed);                                         for (i=0; i<rlen; i+=4) {                                                                         // dump results                                            for (n=0; n<4; n++)                                                            printf ("%15.4f", summation i+n!);                                           printf ("\n");                                                      }                                                                            }                                                                            __________________________________________________________________________

We claim:
 1. Apparatus for deconvolution of response data obtained fromtransmission of a maximum length sequence (MLS), comprising areconstruction buffer, means for deconvoluting each sample of incomingdata as it arrives and storing the deconvoluted sample in thereconstruction buffer, and means for multiplying each sample in turn byelements of a recovery sequence as the sample is received andimmediately adding the product into corresponding portions in thereconstruction buffer.
 2. Apparatus according to claim 1, in which meansare provided to reject immediately any one or more reconstructed MLSswhich are contaminated by noise in excess of a predetermined limit suchthat they should not be added to the average being collected in thereconstruction buffer.
 3. Apparatus according to any of claim 1, inwhich the reconstruction buffer is only as large as the time windowrequired to observe the final waveform.
 4. Apparatus according to any ofclaims 1, which comprises a digital signal processing board, a computerand controlling software.
 5. A method of deconvolution of response dataobtained from transmission of a maximum length sequence (MLS),comprising the steps ofa. deconvoluting samples of incoming data, b.storing said samples in a reconstruction buffer as said samples arereceived, c. creating a product by multiplying each said sample in turnby elements of a recovery sequence as said sample is received, and d.immediately adding said product into corresponding positions in saidreconstruction buffer.
 6. A method according to claim 5, applied torecording of biological signals obtained as response data due tostimulation by a MLS.
 7. Apparatus comprising a digital signalprocessing board and a computer programmed to carry out deconvolution ofthe MLS by the method of any of claim 5.